//Inventario de Libros - Para entregar 27 de Febrero de 2010
//Amìlcar de Leòn - adario@antigualug.org
//Ultima Modificacion: 22 de Febrero, 7pm
package laboratorio1;
//importando libreria swing
import javax.swing.JOptionPane;
//emunerando tipos de estado para cada registro de la matriz
enum STATUS
{
    DISPONIBLE,
    OCUPADO
};

public class Main
{
    public static void main(String[] args)
    {
        String [][] Libros; //declarando matriz
        Libros = new String [10][7]; // creando matriz con filas y columnas
        int Valor=0, Resultado =1; // Valor: declarando variable donde se introducira la opcion
        //Declarando variables de enum e inicializandola
        STATUS POSICIONES = STATUS.DISPONIBLE;
        //variable tipo bandera 
        boolean econtrado=false;
        String Opcion, CdgoPrdcto;
        do
        {
            // esto muestra un mensaje con opciones,
            Opcion =JOptionPane.showInputDialog(null,"1. Ingreso \n2. Modificar \n3 .Eliminar \n4. Buscar \n5. Vender \n6 Ganancia Total \n7 Existencias Mìnimas \n8 Mostrar todos los registros \n8 Salir ","Menu Principal - Libros",JOptionPane.OK_CANCEL_OPTION);
            //convirtiendo tipo de datos de string a int
            Valor= Integer.parseInt(Opcion);

            //setencia de control switch
            switch (Valor)  // solo para variables tipo int, enum, char
            {
                case 1:{//Ingreso
                           for (int Posiciones=0;  Posiciones <=9; Posiciones++)
                           {
                           // if ( (Libros[Posiciones][0]==null) || (Libros[Posiciones][0]==POSICIONES.DSIPONIBLE.toString()) )
                            //esto para que sea eficiente quedaria a asi
                            if ( (Libros[Posiciones][0]==null) || (Libros[Posiciones][0].equals(POSICIONES.DISPONIBLE.toString() ) ) )
                            {
                                Libros[Posiciones][1]=JOptionPane.showInputDialog("Ingresa codigo de Nuevo Libro") ;
                                Libros[Posiciones][2]=JOptionPane.showInputDialog("Descripcion :") ;
                                Libros[Posiciones][3]=JOptionPane.showInputDialog("Autor del Libro :") ;
                                Libros[Posiciones][4]=JOptionPane.showInputDialog("Precio de Compra :") ;
                                Libros[Posiciones][5]=JOptionPane.showInputDialog("Precio de Venta :") ;
                                Libros[Posiciones][6]=JOptionPane.showInputDialog("Existencia :") ;
                                Libros[Posiciones][0]=POSICIONES.OCUPADO.toString();
                                break;
                            }
                            else JOptionPane.showMessageDialog(null, "Lo sentimos, los registros están llenos, puede eliminar algunos registros para agregar nuevos");//si la matriz ya está llena
                            
                           }
                           break;
                        }
                case 2: {//Modificacion
                           CdgoPrdcto=JOptionPane.showInputDialog("Ingrese el codigo a modificar");
                           for (int Posiciones=0;  Posiciones <=9; Posiciones++)
                           {
                               if( Libros[Posiciones][0]!=null)
                               if( (Libros[Posiciones][0].equals(POSICIONES.OCUPADO.toString() ) ) && (Libros[Posiciones][1].equals(CdgoPrdcto)))
                               {
                                   Libros[Posiciones][2]=JOptionPane.showInputDialog(" Modifica la Descripcion" + Libros[Posiciones][2]+" Por:");
                                   Libros[Posiciones][3]=JOptionPane.showInputDialog("Modifica el Autor " + Libros[Posiciones][3])+" Por:";
                                   Libros[Posiciones][4]=JOptionPane.showInputDialog("Modifica el Precio de compra " + Libros[Posiciones][4]+" Por:");
                                   Libros[Posiciones][5]=JOptionPane.showInputDialog("Modifica el Precio de venta "+Libros[Posiciones][5]+" Por:");
                                   Libros[Posiciones][6]=JOptionPane.showInputDialog("Modifica la Existencia "+ Libros[Posiciones][6]+" Por:");
                                   econtrado=true;
                                   break;
                               }
                               
                           }
                           if (econtrado==true) econtrado=false;
                           else JOptionPane.showMessageDialog(null, "Lo sentimos, el Producto No Existe, Ingresa otro Código de Producto a Modificar");
                           break;
                        }
                case 3:{//Eliminacion
                           CdgoPrdcto=JOptionPane.showInputDialog("Ingrese el codigo a Eliminar");
                           for (int Posiciones=0;  Posiciones <=9; Posiciones++)
                           { 
                               if( Libros[Posiciones][0]!=null)
                               if( (Libros[Posiciones][0].equals(POSICIONES.OCUPADO.toString() ) ) && (Libros[Posiciones][1].equals(CdgoPrdcto)))
                               {
                                   // si presiona no devuelve 1
                                   Resultado =  JOptionPane.showConfirmDialog(null, "Esta seguro de Eliminar el Registro \n" + Libros[Posiciones][2] ,"Eliminar Registro",JOptionPane.YES_NO_OPTION);
                                   //para el confirm dialog objeto,mensaje, titulo y botones
                                   if  (Resultado==0)
                                   {
                                        Libros[Posiciones][0]=POSICIONES.DISPONIBLE.toString();
                                        JOptionPane.showMessageDialog(null, "Producto Eliminado");
                                        econtrado=true;
                                   }
                                   break;                                   
                               }
                           }
                           if (econtrado==true) econtrado=false;
                           else JOptionPane.showMessageDialog(null, "El Producto no Existe");
                            break;
                        }
                case 4: break;//Busqueda
                case 5: break;//Venta
                case 6: break;//Ganancia Total
                case 7: break;//Productos con unidad mínima
                case 8: //Mostrar todos los registros
                    for (int Posiciones=0; Posiciones<=9; Posiciones++)
                        {
                              
                            JOptionPane.showMessageDialog(null,
                                    "Codigo "+Libros[Posiciones][1]+"\n "
                                    +"Libro "+Libros[Posiciones][2]+"\n "
                                    +"Autor "+Libros[Posiciones][3]+"\n"
                                    +"Precio_Venta "+Libros[Posiciones][4]+"\n"
                                    +"Precio_Compra"+Libros[Posiciones][5]+"\n"
                                    +"Existencia "+Libros[Posiciones][6]+"\n");
                        }


                    break;
                case 9: break;//Salir
            }
           } while (Valor!=8);
    }
}
